﻿CREATE DATABASE QUANLYRAPCHIEUPHIM_DOAN_PTUDCSDL1
GO
USE QUANLYRAPCHIEUPHIM_DOAN_PTUDCSDL1
GO
CREATE TABLE BANGGIA
(
	ID INT IDENTITY (1,1) NOT NULL,
	MAGIAVE AS 'GV' + RIGHT('0000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
	GIAVE FLOAT NOT NULL,
	MADINHDANGPHIM INT NOT NULL,
	MALOAIKH  INT NOT NULL,
	MASUATCHIEU VARCHAR(8) NOT NULL,
	CONSTRAINT PK_BANGGIA PRIMARY KEY (MAGIAVE)
)
GO
CREATE TABLE KHACHHANG
(
	ID INT IDENTITY (1,1) NOT NULL,
	MAKH AS 'KH' + RIGHT('0000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
	TENKH NVARCHAR(20),
	MAPQ INT,
	MALOAIKH INT,
	MAUSER VARCHAR(5),
	NGSINH DATETIME,
	EMAIL NVARCHAR(20),
	THETHANHVIEN BIT,
	CONSTRAINT PK_KHACHHANG PRIMARY KEY (MAKH)
)
GO
CREATE TABLE NHANVIEN
(
	MANHANVIEN VARCHAR(10),
	TENNHANVIEN NVARCHAR(20),
	MAUSER VARCHAR (5),
	CONSTRAINT PK_NHANVIEN PRIMARY KEY (MANHANVIEN)
)
GO
CREATE TABLE NGUOIDUNG
(
	ID INT IDENTITY (1,1) NOT NULL,
	MAUSER AS 'US' + RIGHT('0000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
	USERNAME VARCHAR(20),
	PASS VARCHAR(20),
--	MAPHANQUYEN INT,
	MALOAIND INT,
	CONSTRAINT PK_NGUOIDUNG PRIMARY KEY (MAUSER)
)
--GO
--CREATE TABLE PHANQUYEN
--(
--	MAPHANQUYEN INT NOT NULL,
--	TENPHANQUYEN NVARCHAR (20),
--	CONSTRAINT PK_PHANQUYEN PRIMARY KEY (MAPHANQUYEN)
--)
GO
CREATE TABLE LOAINGUOIDUNG
(
	MALOAIND INT NOT NULL,
	TENLOAIND VARCHAR(20),
	CONSTRAINT PK_LOAINGUOIDUNG PRIMARY KEY (MALOAIND)
)
GO
CREATE TABLE HOADON
(
	ID INT IDENTITY (1,1) NOT NULL,
	MAHD AS 'HD' + RIGHT('0000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
	GIOLAP DATETIME,
	TONGTIEN FLOAT,
	MANHANVIEN VARCHAR (10),
	MAKH VARCHAR(5),
	CONSTRAINT PK_HOADON PRIMARY KEY (MAHD)
)
GO
CREATE TABLE CT_HD
(
	STT INT IDENTITY (1,1) NOT NULL,
	MAHD VARCHAR(10) NOT NULL,
	MAGIAVE VARCHAR(5) NOT NULL,
	MASUATCHIEU VARCHAR(8),
	MARAP VARCHAR(7),
	MAPHONG VARCHAR (8),
	MAPHIM VARCHAR (7),
	VITRIGHE VARCHAR(10),
	GIATIEN FLOAT,
	SOLUONG INT,
	MUCGIAM INT,
	THANHTIEN FLOAT,
	MATINHTRANGGHE INT,
	CONSTRAINT PK_CT_HD PRIMARY KEY (STT, MAHD, MAGIAVE)
)
GO
CREATE TABLE TINHTRANGGHE
(
	MATINHTRANGGHE INT NOT NULL,
	TENTINHTRANGGHE NVARCHAR(20),
	CONSTRAINT PK_TINHTRANGGHE PRIMARY KEY (MATINHTRANGGHE)
)
GO
CREATE TABLE Phim
(
	id int  IDENTITY (1,1) NOT NULL,
	MaPhim AS 'P' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	TenPhim nvarchar(100),
	GioiThieuPhim nvarchar(max),
	ThoiLuongPhim int,
	NamSX char(10),
	NuocSX nvarchar(50),
	HangSX nvarchar(50),
	DSDienVien nvarchar(max),
	Poster image,
	Trailer text,
	BinhChonPhim int,
	MaDinhDangPhim int,
	CONSTRAINT pk_phim PRIMARY KEY (MaPhim)
)
GO
CREATE TABLE DinhDangPhim
(
	MaDinhDangPhim int NOT NULL,
	TenDinhDangPhim nvarchar(10),
	CONSTRAINT pk_DinhDangPhim PRIMARY KEY (MaDinhDangPhim)
)
GO
CREATE TABLE RapChieu
(
	id int IDENTITY (1,1) NOT NULL,
	MaRap AS 'R' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	TenRap nvarchar(50) ,
	DiaChi nvarchar(max) ,
	CONSTRAINT pk_RapChieu PRIMARY KEY (MaRap)
)
GO
CREATE TABLE DangKyPhim
(
	id int IDENTITY (1,1) NOT NULL,	
	MaDKPhim AS 'DK' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	MaPhim varchar(7) NOT NULL,
	MARAP VARCHAR(7) NOT NULL,
	CONSTRAINT pk_DangKyPhim PRIMARY KEY (MaDKPhim)
)
GO
CREATE TABLE PhongChieu
(
	id int IDENTITY (1,1) NOT NULL,	
	MaPhongChieu AS 'PC' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	TenPhong nvarchar(20) ,
	SoHangGhe int ,
	SoDayGhe int ,
	MoTaPhongChieu nvarchar(max) ,
	MaRap varchar(7),
	MaTinhTrangPhong int,
	DieuKienKyThuat int,
	CONSTRAINT pk_PhongChieu PRIMARY KEY (MaPhongChieu)
)
GO
CREATE TABLE DangKySuatChieu
(
	id int IDENTITY (1,1) NOT NULL,	
	MaDK  AS 'SC' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	MaPhim varchar(7) NOT NULL,
	MaPhongChieu varchar(8) NOT NULL,
	MaSuatChieu varchar(8) NOT NULL,
	MaRap varchar(7),
	CONSTRAINT pk_DangKySuatChieu PRIMARY KEY (MaDK, MaPhim, MaPhongChieu)
)
GO
CREATE TABLE SuatChieu
(
	id int IDENTITY (1,1) NOT NULL,	
	MaSuatChieu  AS 'SC' + RIGHT('0000' + CAST(ID AS varCHAR(6)), 6) PERSISTED,
	GioBatDau int, 
	GioKetThuc int
	CONSTRAINT pk_SuatChieu PRIMARY KEY (MaSuatChieu)
)
GO
CREATE TABLE TheLoaiPhim
(
	MaTheLoaiPhim int NOT NULL,
	TenTheLoaiPhim nvarchar(50) ,
	CONSTRAINT pk_TheLoaiPhim PRIMARY KEY (MaTheLoaiPhim)
)
GO
CREATE TABLE TheLoai_Phim
(
	STT int,
	MaTheLoaiPhim int NOT NULL,
	MaPhim varchar(7)NOT NULL,
	CONSTRAINT pk_TheLoai_Phim PRIMARY KEY (MaTheLoaiPhim, MaPhim)	
)
GO
CREATE TABLE KhachHang_Phim
(
	STT int NOT NULL,
	MaPhim varchar(7) NOT NULL,
	MaLoaiKH int,
	CONSTRAINT pk_KhachHang_Phim PRIMARY KEY (STT, MaPhim,MaLoaiKH)
)
GO
CREATE  TABLE LoaiKhachHang
(
	MaLoaiKhachHang int NOT NULL,
	TenLoaiKhachHang nvarchar(20),
	CONSTRAINT pk_LoaiKhachHang PRIMARY KEY (MaLoaiKhachHang)
)
GO
CREATE TABLE TinhTrangPhong
(
	MaTinhTrangPhong int NOT NULL,
	TenTinhTrangPhong nvarchar(50),
	CONSTRAINT pk_TinhTrangPhong PRIMARY KEY (MaTinhTrangPhong)
)
GO
/*
=================================================================================================================================
=========													 foreign key 										 ================
=================================================================================================================================
*/
alter table CT_HD add constraint fk_CT_HD_TINHTRANGGHE  foreign key (MATINHTRANGGHE) references TINHTRANGGHE(MATINHTRANGGHE)
alter table CT_HD add constraint fk_CT_HD_SuatChieu  foreign key (MASUATCHIEU) references SuatChieu(MaSuatChieu)
alter table CT_HD add constraint fk_CT_HD_RapChieu  foreign key (MARAP) references RapChieu (MaRap)
alter table CT_HD add constraint fk_CT_HD_PhongChieu  foreign key (MAPHONG) references PhongChieu (MaPhongChieu)
alter table CT_HD add constraint fk_CT_HD_Phim foreign key (MAPHIM) references Phim (MaPhim)
alter table CT_HD add constraint fk_CT_HD_BangGia foreign key (MAGIAVE) references BANGGIA (MAGIAVE)



alter table HOADON add constraint fk_HOADON_NHANVIEN  foreign key (MANHANVIEN) references NHANVIEN(MANHANVIEN)
alter table HOADON add constraint fk_HOADON_KHACHHANG  foreign key (MAKH) references KHACHHANG(MAKH)
--alter table NGUOIDUNG add constraint fk_NGUOIDUNG_PHANQUYEN foreign key (MAPHANQUYEN) references PHANQUYEN(MAPHANQUYEN)
alter table NGUOIDUNG add constraint fk_NGUOIDUNG_LOAINGUOIDUNG foreign key (MALOAIND) references LOAINGUOIDUNG(MALOAIND)
alter table KHACHHANG add constraint fk_NGUOIDUNG_LoaiKhachHang foreign key (MALOAIKH) references LoaiKhachHang(MaLoaiKhachHang)
alter table BANGGIA add constraint fk_BANGIA_DinhDangPhim foreign key (MADINHDANGPHIM) references DinhDangPhim(MaDinhDangPhim)
alter table BANGGIA add constraint fk_BANGIA_LOAIKHACHHANG foreign key (MALOAIKH) references LOAIKHACHHANG(MaLoaiKhachHang)
alter table BANGGIA add constraint fk_BANGIA_SUATCHIEU foreign key (MASUATCHIEU) references SuatChieu(MaSuatChieu)


alter table Phim add constraint fk_Phim_DinhDangPhim  foreign key (MaDinhDangPhim) references DinhDangPhim(MaDinhDangPhim)
alter table PhongChieu add constraint fk_PhongChieu_DinhDangPhim  foreign key (DieuKienKyThuat) references DinhDangPhim(MaDinhDangPhim)
alter table PhongChieu add constraint fk_PhongChieu_TinhTrangPhong  foreign key (MaTinhTrangPhong) references TinhTrangPhong(MaTinhTrangPhong)
alter table PhongChieu add constraint fk_PhongChieu_RapChieu  foreign key (MaRap) references RapChieu(MaRap)

alter table DangKySuatChieu add constraint fk_DangKySuatChieuu_Phim  foreign key (MaPhim) references Phim(MaPhim)
alter table DangKySuatChieu add constraint fk_DangKySuatChieu_PhongChieu  foreign key (MaPhongChieu) references PhongChieu(MaPhongChieu)
alter table DangKySuatChieu add constraint fk_DangKySuatChieu_SuatChieu  foreign key (MaSuatChieu) references SuatChieu(MaSuatChieu)

alter table DangKyPhim add constraint fk_DangKyPhim_Phim  foreign key (MaPhim) references Phim(MaPhim)
alter table DangKyPhim add constraint fk_DangKyPhim_RapChieu  foreign key (MaRap) references RapChieu(MaRap)

alter table TheLoai_Phim add constraint fk_TheLoaiPhim_Phim  foreign key (MaPhim) references Phim(MaPhim)
alter table TheLoai_Phim add constraint fk_TheLoaiPhim_LoaiPhim  foreign key (MaTheLoaiPhim) references TheLoaiPhim(MaTheLoaiPhim)

alter table KhachHang_Phim add constraint fk_KhachHangPhim_LoaiKhachHang  foreign key (MaLoaiKH) references LoaiKhachHang(MaLoaiKhachHang)
alter table KhachHang_Phim add constraint fk_KhachHangPhim_Phim  foreign key (MaPhim) references Phim(MaPhim)



ALTER TABLE DANGKYSUATCHIEU ADD CONSTRAINT FK_DANGKYSUATCHIEU_RAPCHIEU FOREIGN KEY (MARAP) REFERENCES RAPCHIEU(MARAP)
--DROP DATABASE QUANLYRAPCHIEUPHIM_DOAN_PTUDCSDL1

/*
=================================================================================================================================
=========													INSERT DATA											 ================
=================================================================================================================================
*/
INSERT into DinhDangPhim VALUES (1, N'2D')
INSERT into DinhDangPhim VALUES (2, N'3D')

INSERT INTO TinhTrangPhong VALUES (1, N'Đang hoạt động')
INSERT INTO TinhTrangPhong VALUES (2, N'Đang sửa chữa')

INSERT RapChieu VALUES ( N'Galaxy Kinh Dương Vương', N'718bis Kinh Dương Vương, Q6, TpHCM.')
INSERT RapChieu  VALUES ( N'Galaxy Nguyễn Du', N'116 Nguyễn Du, Quận 1, Tp.HCM')
INSERT RapChieu VALUES ( N'Galaxy Nguyễn Trãi', N'230 Nguyễn Trãi, Quận 1, Tp.HCM')
INSERT RapChieu  VALUES ( N'Galaxy Tân Bình', N'246 Nguyễn Hồng Đào, Q.TB, Tp.HCM')
INSERT RapChieu VALUES ( N'Galaxy Quang Trung', N'Số 304 Bis, đường Quang Trung, P.11, Q. Gò Vấp, Tp.HCM')


INSERT LOAINGUOIDUNG (MALOAIND, TENLOAIND) VALUES (0, N'CHU RAP')
INSERT LOAINGUOIDUNG (MALOAIND, TENLOAIND) VALUES (1, N'NHAN VIEN')
INSERT LOAINGUOIDUNG (MALOAIND, TENLOAIND) VALUES (2, N'KHACH HANG')

INSERT INTO NGUOIDUNG  VALUES ( N'nguyenngoctolinh', N'c4b100789a', 0) --pass: bellfille
INSERT INTO  NGUOIDUNG  VALUES ( N'hothanhthanh', N'484cf0661d', 1) --pass:thanhho
INSERT INTO NGUOIDUNG  VALUES ( N'hoangquynh', N'f4042a13da', 1)--pass:quynhvu

INSERT LoaiKhachHang (MaLoaiKhachHang, TenLoaiKhachHang) VALUES (0, N'Người lớn  ')
INSERT LoaiKhachHang (MaLoaiKhachHang, TenLoaiKhachHang) VALUES (1, N'Trẻ em    ')
INSERT LoaiKhachHang (MaLoaiKhachHang, TenLoaiKhachHang) VALUES (2, N'HS-SV     ')

INSERT NHANVIEN (MANHANVIEN, TENNHANVIEN, MAUSER) VALUES (N'NV001', N'HỒ THANH THANH', 'US002')
INSERT NHANVIEN (MANHANVIEN, TENNHANVIEN, MAUSER) VALUES (N'NV002', N'VŨ HOÀNG QUỲNH', 'US003')

INSERT [dbo].[TheLoaiPhim] ([MaTheLoaiPhim], [TenTheLoaiPhim]) VALUES (1, N'hai huoc')
INSERT [dbo].[TheLoaiPhim] ([MaTheLoaiPhim], [TenTheLoaiPhim]) VALUES (2, N'tinh cam')

INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 10, 12)
INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 13, 14)
INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 14, 16)
INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 17, 19)
INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 19, 21)
INSERT [dbo].[SuatChieu] ( [GioBatDau], [GioKetThuc]) VALUES ( 21, 23)

INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'OUIJA/TRÒ CHƠI GỌI HỒN 16+', N'Bộ phim kinh dị xoay quanh trò chơi Ouija, khi một nhóm bạn cố gắng liên lạc với người bạn ở cõi âm qua món đồ chơi này. Tuy nhiên, một thực thể hắc ám tồn tại phía sau trò chơi này và cố gắng giết hại từng người trong nhóm bạn.', 120, N'2013      ', N'Mỹ', N'Stiles White', N'Olivia Cooke, Ana Coto, Daren Kagasoff', NULL, N'https://www.youtube.com/watch?v=pHtZqdPyKY4', 7, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'BIỆT ĐỘI BIG HERO 6', N'Bộ phim sẽ lấy bối cảnh một thành phố giả tưởng và cực kì hiện đại mang tên San Fransokyo (ghép giữa San Francisco và Tokyo) với những nét đặc trưng của cả hai thành phố',100, N'2013      ', N'Mỹ', N'Disney', N'Jamie Chung, Genesis Rodriguez, Damon Wayans Jr',NULL, N'https://www.youtube.com/watch?v=meECc8JbQ2Y', 8, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'Spirited Away', N'Câu chuyện kể về cô bé bướng bỉnh Chihiro. Gia đình của Chihiro chuyển từ thành phố về quê sinh sống, và Chihiro chẳng thích thú tí nào với sự thay đổi này', 125 , N'2001      ', N'Nhật Bản', N'Studio Ghibli', N'Rumi Hiiragi, Miyu Irino, Mari Natsuki', NULL, N'https://www.youtube.com/watch?v=6az9wGfeSgM', 10, 2)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'Chìa khóa đổi đời / Key of life', N'Với kịch bản được trau chuốt kỹ lưỡng, cùng dàn diễn viên lỗi lạc kết hợp với nhau để trở thành một bộ phim trinh thám hài hước phi thường. Bất ngờ diễn viên “ế ẩm” và kẻ sát thủ tình cờ đổi cuộc sống cho nhau, một nữ biên tập viên dính líu vào đó và số mệnh của mỗi người chuyển sang một hướng không thể lường trước được… ',128, N'2012      ', N'Nhật Bản', N'Uchida Kenji', N'Masato Sakai, Taruyuki Kagawa, Ryoko HiroSue', NULL, N'https://www.youtube.com/watch?v=TIRl-ZAtI0M', 9, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'THE PYRAMID / BÍ ẨN KIM TỰ THÁP', N'Bộ phim kể về một nhóm nhà khảo cổ người Mỹ tìm thấy Kim Tự Tháp cổ xưa bị chon vùi giữa sa mạc Ai Cập, họ tìm mọi cách để khám phá và tìm hiểu bí mật bên trong nó, tuy nhiên họ không ngờ rằng mình đã phạm vào lời nguyền ngay khi họ bước vào bên trong, và mọi người bắt đầu nhận ra rằng mình đang bị săn đuổi…', 89, N'2013      ', N'Mỹ', N'FOX', N'Denis O''Hare, Ashley Hinshaw, James Buckley', NULL, N'https://www.youtube.com/watch?v=-qPaS220zPc', 10, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'DORAEMON CG', N'Nhân dịp kỷ niệm 80 năm ngày sinh của họa sĩ Fujiko FFujio, chú mèo máy Doraemon lai được tái hiên một lần nữa trên màn ảnh với ứng dụng công nghê đồ họa máy tính 3D. Đây cũng là tập phim cuối cùng về Doraemon, Nobita cùng nhóm bạn', 100, N'2012      ', N'Nhật Bản', N'CG', N'Wasabi Mizuta, Megumi Ohara, Yumi Kakazu', NULL, N'https://www.youtube.com/watch?v=G4TIg3_wyKI', 9, 2)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'Từ điển tình yêu / The great Passage', N'Đây là một tuyệt tác của đạo diễn Ishii Yuya, người dẫn đầu thế hệ 8X của nền điện ảnh Nhật Bản. Nhân vật chính trong phim làm việc tại phòng kinh doanh của một nhà xuất bản lớn, khá chăm chỉ đến mức bị xung quanh coi là người lập dị, nhưng lại rất xuất sắc về tính nhạy cảm đối với ngôn từ. Anh được Ban biên tập soạn từ điển tiếng Nhật tuyển chọn vào Ban', 133, N'2013      ', N'Nhật Bản', N'Ishii Yuya', N'Ryuhei Matsuda, Aoi Miyazaki, Jo Odagiri, Haru Kuroki, Misako', NULL, N'https://www.youtube.com/watch?v=vlTjgcOQxjI', 6, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'Cuộc chiến thành nổi', N'Đây là bộ phim lịch sử giải trí sảng khoái dựa trên câu chuyện có thật vào cuối thời kỳ nội chiến Nhật Bản (năm 1590). Toyotomi Hideyoshi với mục đích thống nhất thiên hạ đã phái đoàn quân lớn để đánh nhà họ Hojo - lãnh chủ mạnh nhất ở vùng miền Đông. Trong những thành phụ phía Hojo, chỉ có thành Oshi nhất định không chịu đầu hàng trước quân Toyotomi cho đến phút giây cuối cùng. Bị 23 ngàn bình sĩ quân Toyotomi bao vây xung quanh thành, đội ngũ cố thủ thành Oshi chỉ còn 500 người. Trong khi đó quân Toyotomi đã thực hiện chiến thuật thuỷ công...', 144, N'2012      ', N'Nhật Bản', N'Inudo Isshin, Higuchi Shinji', N'Nagachika Narita, Kaihime, Izumin, Tanba', NULL, N'https://www.youtube.com/watch?v=IEkbWLuSmL4', 10, 1)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'Chuỗi hạt đa màu / Short Peace', N'Đạo diễn Otomo Katsuhiro – người đã từng làm rung chuyển toàn thế giới bởi những tác phẩm truyện tranh và phim hoạt hình mang tính cách tân như “AKIRA” kết hợp với những nhà sáng tạo đầy triển vọng mang cùng “gen cách tân” như ông để làm ra một tập phim ngắn gồm 5 câu chuyện (bao gồm đoạn mở đầu phim), mở ra một thế giới quan kỳ thú. Chủ đề chung của 5 câu chuyện là “Nhật Bản”. “Bén lửa bốc cháy” của đạo diễn Otomo Katsuhiro miêu tả mối tình nam nữ bị chia ly, lấy bối cảnh trận hoả hoạn lớn ở thành Edo.', 68, N'2013      ', N'Nhật Bản', N'Crispy''s Inc.', N'Shuhei Morita, Katsuhiro Otomo', NULL, N'https://www.youtube.com/watch?v=w-E7FUKzqhY', 9, 2)
INSERT [dbo].[Phim] ( [TenPhim], [GioiThieuPhim], [ThoiLuongPhim], [NamSX], [NuocSX], [HangSX], [DSDienVien], [Poster], [Trailer], [BinhChonPhim], [MaDinhDangPhim]) VALUES ( N'I Am', N'I Am.: SMTown Live World Tour in Madison Square Garden là câu chuyện kể về những năm tháng luyện tập khổ nhọc chỉ để có được 4 phút vinh quang. Thay vì khai thác ánh đèn sân khấu rực rỡ, hay những cuộc chơi xa xỉ của các ngôi sao thường thấy trên truyền hình, bộ phim tập trung vào miêu tả quá trình nỗ lực, những giọt mồ hôi mà các ngôi sao trẻ phải bỏ ra trong nhiều năm chỉ để chuẩn bị cho 4 phút biểu diễn trên sân khấu. Câu chuyện về thời niên thiếu và quá trình trưởng thành của các nghệ sĩ chắc chắn sẽ khiến khán giả phải cảm động. Bộ phim được làm ra để dành cho những người trẻ tuổi.', 116, N'2012      ', N'Hàn Quốc', N'SM Town', N'TVXQ, Super Junior, SNSD, Shinee,...', NULL, N'https://www.youtube.com/watch?v=Zm_vj6eIUWE', 7, 2)

select * from KhachHang
select * from NGUOIDUNG
-- them phong
/*
=================================================================================================================================
=========											trigger														 ================
=================================================================================================================================
*/
go
create Function func_CheckSuatChieu()
	returns int
as
begin
	declare @kq int
	set @kq = 0
	declare cur_BangGiaTruoc19h Cursor
	for select bg.MADINHDANGPHIM, bg.GIAVE, sc.GioBatDau
	from BangGia bg, SuatChieu sc
	Where bg.MASUATCHIEU = sc.MASUATCHIEU and sc.GioBatDau < 19
	Open cur_BangGiaTruoc19h
	declare @MaDD int, @GiaVe float, @GioBatDau int
	Fetch Next From cur_BangGiaTruoc19h into @MaDD, @GiaVe, @GioBatDau
	while @@fetch_status = 0
	Begin
			declare cur_BangGiaSau19h Cursor
			for select bg2.MADINHDANGPHIM, bg2.GIAVE, sc2.GioBatDau
			from BangGia bg2, SuatChieu sc2
			Where bg2.MASUATCHIEU = sc2.MASUATCHIEU and sc2.GioBatDau >= 19
			Open cur_BangGiaSau19h
			declare @MaDD2 int, @GiaVe2 float, @GioBatDau2 int
			Fetch Next From cur_BangGiaSau19h into @MaDD2, @GiaVe2, @GioBatDau2
			while @@fetch_status = 0
			Begin
				if(@madd = @madd2 and @GiaVe >= @GiaVe2)
				begin
					set @kq = 1
					return @kq
				end
				Fetch Next From cur_BangGiaSau19h into @MaDD2, @GiaVe2, @GioBatDau2
			End
			Close  cur_BangGiaSau19h  
			Deallocate cur_BangGiaSau19h 
		Fetch Next From cur_BangGiaTruoc19h into @MaDD, @GiaVe, @GioBatDau
	End
	Close  cur_BangGiaTruoc19h  
	Deallocate cur_BangGiaTruoc19h 
	return @kq
end
go
create trigger tr_GiaVe 
on  BANGGIA  
for insert,update
as
	if(exists(select * from BangGia bg2 
				where bg2.MADINHDANGPHIM = 1 
				and bg2.Giave >= (select min(bg.Giave)
								from BANGGIA bg
								where bg.MADINHDANGPHIM = 2)))
	begin
		raiserror(N'Lỗi: Giá vé phim 2D Không được mắc hơn giá vé phim 3D',16,1)
		rollback transaction
	end
	declare @kq int
	Select @kq = dbo.func_CheckSuatChieu()
	if(@kq = 1)
	begin
		raiserror(N'Lỗi: Giá vé phim trước 19h Không được mắc hơn giá vé phim sau 19h',16,1)
		rollback transaction
	end
go
select * from SuatChieu
select * from BANGGIA
--insert into BangGia values(70000,2,'SC00002')
/*
=================================================================================================================================
=========											stored procedure											 ================
=================================================================================================================================
*/
go
create proc usp_ThemPhongChieu @TenPhong nvarchar(20), @SoHang int, @SoDay int, @MoTaPC nvarchar(Max), 
								@MaRap Char(7), @MaTT char(10), @DieuKienKT char(10), @kq int out
As
begin	declare @MaPhong varchar(7)
		INSERT into PhongChieu values(@TenPhong, @SoHang, @SoDay, @MoTaPc, @MaRap, @MaTT, @DieuKienKT)
		if(EXISTS(select * from PhongChieu Where TenPhong = @TenPhong
											And SoHangGhe =  @SoHang 
											And SoDayGhe = @SoDay
											and MoTaPhongChieu = @MoTaPc
											and MaRap = @MaRap
											and MaTinhTrangPhong = @MaTT
											and DieuKienKyThuat = @DieuKienKT
											and MaPhongChieu = @MaPhong))
			set @kq = 1
		else
			set @kq = 0
end
-- update phong
go
create proc usp_CapNhatPhong  @MaPhong char(10), @TenPhong nvarchar(20),  @SoHang int, @SoDay int, @MoTaPC nvarchar(Max), 
								@MaRap Char(7), @MaTT char(10), @DieuKienKT char(10), @kq int out
As
begin	
		UPDATE PhongChieu set TenPhong = @TenPhong, SoHangGhe =  @SoHang, SoDayGhe = @SoDay, MoTaPhongChieu = @MoTaPc, 
								MaRap = @MaRap, MaTinhTrangPhong = @MaTT, DieuKienKyThuat = @DieuKienKT
		Where MaPhongChieu = @MaPhong
		if(EXISTS(select * from PhongChieu Where MaPhongChieu = @MaPhong
											and TenPhong = @TenPhong
											And SoHangGhe =  @SoHang 
											And SoDayGhe = @SoDay
											and MoTaPhongChieu = @MoTaPc
											and MaRap = @MaRap
											and MaTinhTrangPhong = @MaTT
											and DieuKienKyThuat = @DieuKienKT
											and MaPhongChieu = @MaPhong))
			set @kq = 0
		else
			set @kq = 1
end
----------------------------------------------STORED PROCEDURE ĐĂNG NHẬP - ĐĂNG KÝ-------------------------------------
--KIỂM TRA TÀI KHOẢN ĐĂNG NHẬP
go
create PROC SP_CHECK_ACCOUNT_LOGIN @USERNAME VARCHAR(20), @PASSWORD VARCHAR(10), @KQ INT OUT
AS
BEGIN
	IF(EXISTS (SELECT * FROM NGUOIDUNG ND WHERE ND.USERNAME = @USERNAME AND ND.PASS = @PASSWORD))
		SET @KQ = 0 --ĐÃ TỒN TẠI TÀI KHOẢN ==> CÓ THỂ ĐĂNG NHẬP
	ELSE
		SET @KQ = 1 --CHƯA TỒN TẠI TÀI KHOẢN ==> KO THỂ ĐĂNG NHẬP
END
--KIỂM TRA EMAIL
GO
create PROC SP_CHECK_EMAIL @EMAIL VARCHAR(20), @KQ INT OUT
AS
BEGIN
	IF(EXISTS (SELECT * FROM KHACHHANG KH WHERE KH.EMAIL = @EMAIL))
		SET @KQ = 0 --ĐÃ TỒN TẠI EMAIL ==> CÓ THỂ GỬI MAIL XÁC NHẬN
	ELSE
		SET @KQ = 1 --CHƯA TỒN TẠI EMAIL ==> KO THỂ GỬI MAIL XÁC NHẬN
END

--INSERT THONG TIN DANG KY VAO BANG NGUOI DUNG VA LẤY MÃ USER
GO

create PROC SP_INSERT_NGUOIDUNG_LAY_MAUSER @USERNAME VARCHAR(20), @PASSWORD VARCHAR(10), @MAUSER VARCHAR(5) OUT
AS
BEGIN
	INSERT INTO NGUOIDUNG VALUES (@USERNAME, @PASSWORD, '2')
	SET @MAUSER = (SELECT MAUSER
				   FROM NGUOIDUNG ND
				   WHERE ND.USERNAME = @USERNAME AND ND.PASS = @PASSWORD)
 
END

--THÊM KHÁCH HÀNG
GO
create PROC SP_INSERT_KHACHHANG @HOTEN NVARCHAR(50), @MALOAIKH INT, @MAUSER VARCHAR(5), @NGAYSINH DATE, @EMAIL NVARCHAR(50), @KQ INT OUT
AS
BEGIN
	IF(@MALOAIKH != 2)
	BEGIN
		IF( YEAR(GETDATE()) - YEAR(@NGAYSINH) < 18)
			SET @MALOAIKH = 1 -- LÀ TRẺ EM
		ELSE
			SET @MALOAIKH = 0 -- LÀ NGƯỜI LỚN
	END
	
	-- THÊM KHÁCH HÀNG
	
	--INSERT INTO NGUOIDUNG VALUES (@USERNAME, @PASSWORD, '2')
	--DECLARE @MAUSER VARCHAR(5)
 
	--EXEC SP_LAY_MAUSER @USERNAME, @PASSWORD, @MAUSER OUTPUT
	INSERT INTO KHACHHANG(TENKH, MALOAIKH , MAPQ , MAUSER , NGSINH , EMAIL, THETHANHVIEN) 
				VALUES (@HOTEN, @MALOAIKH, 2, @MAUSER, @NGAYSINH, @EMAIL, 0) --0 LÀ KO CÓ THẺ THÀNH VIÊN
	
	--KIỂM TRA KHÁCH HÀNG CÓ THÊM THÀNH CÔNG HAY CHƯA
	IF (EXISTS(SELECT * FROM KHACHHANG WHERE MAUSER = @MAUSER))
		SET @KQ = 0 --THÊM THÀNH CÔNG
	ELSE
		SET @KQ = 1 -- THÊM KHÔNG THÀNH CÔNG
END

--KIỂM TRA TÀI KHOẢN TRƯỚC KHI THÊM
GO
create PROC SP_KIEMTRATAIKHOAN @USERNAME NVARCHAR(20), @KQ INT OUT
AS
BEGIN
 IF (EXISTS (SELECT * FROM NGUOIDUNG ND WHERE  ND.USERNAME = @USERNAME))
  SET @KQ = 1 -- KHÔNG ĐƯỢC THÊM 
 ELSE
  SET @KQ = 0 -- ĐƯỢC QUYỀN THÊM
END

--LẤY MÃ LOẠI NGƯỜI DÙNG
GO
create PROC SP_LAY_MALOAIND @USERNAME VARCHAR(20), @PASSWORD VARCHAR(10), @MALOAIND INT OUT
AS
BEGIN
 SET @MALOAIND = (SELECT MALOAIND
				  FROM NGUOIDUNG ND
				  WHERE ND.USERNAME = @USERNAME AND ND.PASS = @PASSWORD)
 
END


select *  from RapChieu
select * from PhongChieu




----------------------------------------------------------------------------//STORED PROCEDURE THÊM PHIM//--------------------------------------------------------------------------------------
go
create proc sp_ThemPhim @TenPhim nvarchar(100), @GioiThieuPhim nvarchar(255), @ThoiLuongPhim int, @NamSX char(5), @NuocSX nvarchar(20), @HangSX nvarchar(50), @DSDienVien nvarchar(255), @Poster image, @Trailer varchar(255), @BinhChonPhim int, @MaDinhDangPhim int, @MaRap char(10), @MaTheLoaiPhim char(10), @kq int out
as
begin 
     INSERT into Phim values(@TenPhim, @GioiThieuPhim, @ThoiLuongPhim,@NamSX, @NuocSX, @HangSX, @DSDienVien, @Poster, @Trailer, @BinhChonPhim, @MaDinhDangPhim)		
     
     declare @MaPhim char(10)
     set @MaPhim = (select MaPhim 
                    from Phim
                    where id >= all (select MAX(id) from Phim)) 
			select * from Phim
     INSERT into DangKyPhim(MaPhim,MARAP) values(@MaPhim, @MaRap)
     INSERT into TheLoai_Phim values(@MaTheLoaiPhim, @MaPhim)
     
     if(exists(select * 
               from Phim
               where TenPhim=@TenPhim
               and GioiThieuPhim = @GioiThieuPhim   
               and ThoiLuongPhim=@ThoiLuongPhim
               and NamSX=@NamSX
               and NuocSX=@NuocSX
               and HangSX=@HangSX
               and DSDienVien = @DSDienVien
               and Trailer = @Trailer
               and BinhChonPhim = @BinhChonPhim
               and MaDinhDangPhim=@MaDinhDangPhim)
               
        and exists (select *
                    from DangKyPhim  
                    where MaPhim=@MaPhim
                    and MARAP=@MaRap)
                    
        and exists(select * 
                   from TheLoai_Phim  
                   where MaTheLoaiPhim=@MaTheLoaiPhim
                   and MaPhim=@MaPhim)
                   )
                   
             set @kq=0
     else 
             set @kq=1
end


------------------------------------------------STORED PROCEDURE DANGKY_SUATCHIEU----------------------------------
--TÌM PHIM THEO RẠP
GO
CREATE PROC SP_LOAD_DSPHIM_THEO_RAP @MARAP VARCHAR(7)
AS
BEGIN
	SELECT DKP.MaPhim, P.TenPhim, DKP.MARAP, P.MaDinhDangPhim, P.ThoiLuongPhim
	FROM DangKyPhim DKP, Phim P 
	WHERE DKP.MaPhim = P.MaPhim AND DKP.MARAP = @MARAP
END


--TÌM PHIM THEO ĐỊNH DẠNG PHIM
GO
CREATE PROC SP_LOAD_DSPHIM_THEO_MADINHDANG @MDD INT
AS
BEGIN
	SELECT DKP.MaPhim, P.TenPhim, DKP.MARAP, P.MaDinhDangPhim, P.ThoiLuongPhim
	FROM DangKyPhim DKP, Phim P 
	WHERE DKP.MaPhim = P.MaPhim AND P.MaDinhDangPhim = @MDD
END



--LẤY DANH SÁCH PHÒNG TRONG BẢNG PHÒNG CHIẾU THEO ĐỊNH DẠNG PHIM
GO
CREATE PROC SP_LOAD_DSPHONG_THEODINHDANGPHIM @MDD INT 
AS
BEGIN
	SELECT DISTINCT P.MaPhongChieu, P.TenPhong
	FROM PhongChieu P, Phim PHIM, RapChieu RC, DangKyPhim DKP
	WHERE P.MaRap = RC.MaRap AND RC.MaRap = DKP.MARAP AND DKP.MaPhim = PHIM.MaPhim AND PHIM.MaDinhDangPhim = @MDD
END


--KIỂM TRA MÃ PHIM ĐÃ TỒN TẠI HAY CHƯA
GO
CREATE PROC SP_KIEMTRA_TONTAI_MAPHIM @MAPHIM VARCHAR(7), @KQ INT OUT
AS
BEGIN
	IF(EXISTS(SELECT * FROM Phim P WHERE P.MaPhim = @MAPHIM))
		SET @KQ = 0 -- CÓ THỂ TIẾP TỤC ĐĂNG KÝ SUẤT CHIẾU
	ELSE
		SET @KQ = 1 -- BÁO LỖI! KHÔNG ĐƯỢC TIẾP TỤC ĐĂNG KÝ SUẤT CHIẾU
END 


--LẤY TÊN PHIM, ĐỊNH DẠNG PHIM, THỜI LƯỢNG PHIM THEO MÃ PHIM
GO
CREATE PROC SP_LOAD_TENPHIM_DINHDANGPHIM_THOILUONGPHIM @MAPHIM VARCHAR(7)
AS
BEGIN
	SELECT P.TenPhim, P.MaDinhDangPhim, P.ThoiLuongPhim
	FROM PHIM P
	WHERE P.MaPhim = @MAPHIM
END


--LOAD GIỜ BẮT ĐẦU, GIỜ KẾT THÚC TỰ THEO, KHÔNG ĐƯỢC SỬA 
GO
CREATE PROC SP_LOAD_GIOBD_SUATCHIEU 
AS
BEGIN
	SELECT SC.GioBatDau, SC.MaSuatChieu
	FROM SuatChieu SC
END




--LOAD GIỜ KẾT THÚC DỰA VÀO GIỜ BẮT ĐẦU
GO
CREATE PROC SP_LOAD_GIOKT_SUATCHIEU @GIOBD INT, @GIOKT INT OUT
AS
BEGIN
	SET @GIOKT = (SELECT SC.GioKetThuc
	FROM SuatChieu SC
	WHERE SC.GioBatDau = @GIOBD)
END



--ĐĂNG KÝ SUẤT CHIẾU
GO
CREATE alter PROC SP_DANGKYSUATCHIEU @MAPHIM VARCHAR(7), @MAPHONG VARCHAR(8), @MARAP VARCHAR(7), @MASC VARCHAR(8), @KQ INT OUT
AS
BEGIN
	INSERT INTO DangKySuatChieu VALUES (@MAPHIM, @MAPHONG, @MASC, @MARAP)
	--KIỂM TRA ĐĂNG KÝ THÀNH CÔNG
	IF(EXISTS(SELECT * FROM DangKySuatChieu DKSC WHERE DKSC.MaPhim = @MAPHIM))
		SET @KQ = 0 -- ĐĂNG KÝ THÀNH CÔNG
	ELSE
		SET @KQ = 1 -- ĐĂNG KÝ KHÔNG THÀNH CÔNG
	
END



--KIỂM TRA NẾU PHIM ĐÃ ĐƯỢC ĐĂNG KÝ CHO RẠP ĐÓ, PHÒNG ĐÓ, SUẤT CHIẾU ĐÓ RỒI THÌ KHÔNG ĐƯỢC ĐĂNG KÝ NỮA
GO
CREATE PROC SP_KIEMTRA_DANGKY @MAPHIM VARCHAR(7), @MAPHONG VARCHAR(8), @MARAP VARCHAR(7), @MASC VARCHAR(8), @KQ INT OUT
AS
BEGIN
	IF(EXISTS(SELECT * 
			  FROM DangKySuatChieu DKSC
			  WHERE DKSC.MaPhim = @MAPHIM AND DKSC.MaPhongChieu = @MAPHONG AND DKSC.MaRap = @MARAP AND DKSC.MaSuatChieu = @MASC))
		SET @KQ = 1 --KHÔNG ĐƯỢC ĐĂNG KÝ SUẤT CHIẾU
	ELSE
		SET @KQ = 0 --ĐƯỢC QUYỀN ĐĂNG KÝ SUẤT CHIẾU 
END


---------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------//END STORED PROCEDURE THÊM PHIM//----------------------------------------------------------------------------

-----------------------------------------------------------------------//STORED PROCEDURE THÊM RẠP//----------------------------------------------------------------------------
create proc sp_ThemRapChieu @TenRap nvarchar(100),@DiaChi nvarchar(255), @kq int out
As
begin	
		INSERT into RapChieu values(@TenRap, @DiaChi)
		if(EXISTS(select * from RapChieu Where TenRap = @TenRap
		                                                And DiaChi =  @DiaChi ))
			set @kq = 1
		else
			set @kq = 0
end
-----------------------------------------------------------------------//END STORED PROCEDURE THÊM RẠP//---------------------------------------------------------------------------->>>>>>> .r37
